package com.springboot.redis.demo;

/**
 * 基于 Hyperloglog UV 统计案例
 *
 * @author: zr
 * @date: 2021-11-17
 */
public class HyperloglogDemo extends RedisClient {

    public static String KEY_PREFIX = "hyperloglog_uv_";

    /**
     * 初始化uv数据
     *
     * @param
     * @return
     * @throws
     * @date 2021-11-17
     */
    public static void initUvData() {
        String currentDate = getCurrentDate();
        for (int i = 0; i < 1358; i++) {
            jedis.pfadd(KEY_PREFIX + currentDate, String.valueOf(i + 1));
        }
    }

    /**
     * 获取uv值
     *
     * @param
     * @return {@link long}
     * @throws
     * @date 2021-11-17
     */
    public static long getUv() {
        return jedis.pfcount(KEY_PREFIX + getCurrentDate());
    }

    public static void main(String[] args) {
        initUvData();
        // 基于HyperLogLog 数据结构存储uv值，有一个误差，不是精准的，可以自己进行去重，重复往里面加重复的数据，不会+1
        long uv = getUv();
        System.out.println("今天的Uv值为：" + uv);
    }
}
